Amazon Managed Blockchain の概要
本日、7月7日はクラスメソッドの創立記念日ということで、日曜日にもかかわらず朝から記事が投稿されていますね。
私も何か記念投稿しようと思って、興味がありながらも勉強できてなかった「Amazon Managed Blockchain」について調べたので、ざっくりまとめをシェアします。
まだ国内では Amazon Managed Blockchain の情報が少ないので、AWS Summit London のセッション「Deep dive on Amazon Managed Blockchain」が元ネタになってます。
AWS のブロックチェーン
ブロックチェーンはおもに2つの管理タイプがあります。ひとつは、複数の使用者が信頼された機関に所有権を一元化してトランザクションを扱う「中央集権型」です。もうひとつは、複数の使用者が所有権を分散してトランザクションを扱う「分散型」です。
中央集権型
中央集権型の必要性
- 製造メーカー
- 生産から流通までの製品の流れを台帳に記録することで、問題が発生した場合の原因をすばやく突き止め、予防措置を講じたい
- 人事や給与システム
- 給与、ボーナス、福利厚生、業績といった各従業員のデジタル履歴を完全な形で一か所に保管
- ヘルスケア
- 病院器具の棚卸しを追跡、検証
直面する課題
従来のリレーショナルデータベースで台帳を作ろうとすると、以下のような課題に直面します。
- 集約型のリソース
- 管理とスケールが難しい
- エラーが発生しやすく不完全
- 検証不可能
従来型のデータベースには管理者が必ずいます。管理者がデータを書き換えた場合、利用者は読み込んだデータを信頼するしかありません。
自前でブロックチェーンを組む場合、少なくとも2つのピアが必要です。ブロックの正当性を組織のなかで偽りの信頼関係を組むことは、いたずらに複雑性を追加するようなものです。
Amazon QLDB
Amazon QLDB(Quantum Ledger Database)は中央集権型のフルマネージドな台帳データベースです。執筆時点では Preview の状態です。
特徴 | 内容 |
---|---|
イミュータブル | データへのすべての変更のシーケンス記録を維持します。検出または変更できません。全履歴を照会し分析できます。 |
暗号的に検証可能 | 暗号化を使用してデータの履歴の安全な出力ファイルを生成 |
非常にスケーラブル | 一般的なブロックチェーンフレームワークの台帳の2倍〜3倍のトランザクションを実行 |
使いやすい | データの問い合わせには SQL API のような使い慣れたデータベース機能を使用 |
分散型
分散信頼でトランザクションを実行する必要性
- 貿易
- 輸入会社、輸出会社、保険会社、銀行など複数の関係者と Peer-to-Peer で取引することで、国境をまたいだ支払いや市産の譲渡にかかる時間や複雑さを解消
- 小売
- 報酬を処理する中央組織を必要とせず、銀行や第三者のロイヤルティプログラムと提携し、顧客への報酬を合理化する
- 銀行
- シンジケートローンにおいて、各銀行間での情報交換に仲介者を必要とせず、すばやい情報交換の実現
複雑なビジネスネットワークに関する顧客の問題
- ネットワークは中央当局に依存
- セキュアで公正なデータ共有方法について合意できない
- 複数の組織が単一の最新のデータビューを必要としている
- 複数の組織間のビジネスロジックを簡素化
- 資産の移転にはエスクローが必要
- パブリックネットワークは、改ざん防止されたトランザクションの履歴を必要とします。
ブロックチェーンはネットワークの信頼を築く
ビジネスネットワークにおける中央権限の必要性を排除します。
3つの主要コンポーネント
- 分散台帳
- 合意メカニズム
- スマートコントラクト実行環境
これらの要素を組み合わせることで、他の当事者が取引に同意し、その取引を記録することによって、2つの当事者が互いに取引できるようになります。 このプロバイダーは不変性と信頼を提供します。
ブロックチェーンのコンポーネント:分散台帳データベース
ジャーナルはすべてのトランザクションのイミュータブルなログを記録し、ブロックチェーンネットワーク内のノードによって維持されます。
後続のブロックには必ず前のブロックのハッシュのコピーが含まれます。このように前後でハッシュをつなぐことで、ブロックチェーンのイミュータブルな環境は実現されています。
仮に一部のノードでブロック59のトランザクションを誰かが改ざん出来たとします。その場合、トランザクションの内容が変わったことで、ブロック59の Block Hash
は異なる値へと変化します。しかし、ブロック60は Previous Block Hash
を知っているため、ここでチェーンが途切れること(不正なブロック)になります。ブロックチェーンの仕組み上、このような不正なブロックは無視されて、その情報は破棄されます。その他の多数のノードで保持している、正しいと判断された(改ざん前の)ブロック59が残ります。
ブロックチェーンのコンポーネント:合意メカニズム
いくつかの重要な属性
- 困難なフォールトトレランス要件
- 取引レート、エネルギー消費
- ハードウェア要件
- セキュリティ
ブロックチェーンのコンポーネント:スマートコントラクト
- スマートコントラクト
- アプリに埋め込まれたルール
- コードの検証済み実行
- 条件付き操作
- アプリケーションが台帳に書き込みます
- 契約は、ブロックチェーンネットワークの外部のコンポーネントとやり取りできます(チェーン外)
- 従来のコントラクト
- 人のアクションが必要
- 不正操作に対して守られていない
- 第三者による強制の検証
既存のブロックチェーンソリューションの課題
- セットアップが難しい
- スケーリングが難しい
- 管理が複雑
- コストが高い
これらの課題を解決するために AWS は次のサービスを提供しました。
Amazon Managed Blockchain
Amazon Managed Blockchain とは?
Amazon Managed Blockchain はフルマネージドな分散型のブロックチェーンサービス。先日 GA されていますが、執筆時点では北バージニアリージョンでのみ利用可能です。
特徴 | 内容 |
---|---|
フルマネージド | 数分でブロックチェーンネットワークを構築 |
オープンソースの多様性 | Hyperledger Fabric と Ethereum(coming soon) 2つのフレームワークをサポート |
分散化 | 民主的にネットワークを統治する |
信頼性と安全性 | Amazon QLDB の技術を採用 |
低コスト | 従量課金 |
統合 | セキュアな分析のためにデータを Amazon QLDB に送る |
Amazon Manaaged Blockchain の仕組み
- ネットワークの作成
- ブロックチェーンのフレームワーク選択
- ブロックチェーンネットワークのセットアップ
- 数クリックでメンバーになれる
- メンバーの招待
- ネットワークに参加する他の AWS アカウントを招待する
- ノードの追加
- 分散台帳のコピーを格納するブロックチェーンピアノードを作成および構成する
- アプリケーションのデプロイ
- ノードごとに分散アプリケーションを作成し、ネットワークにデプロイします。ネットワーク上の他のメンバーとトランザクションを行います
Hyperledger Fabric
- 各メンバーが見ることができる台帳のトランザクションを制限するチャネルを持った許可制ネットワークを作成
- Goで書かれたチェーンコード(スマートコントラクト)は Docker コンテナで実行
- チェーンコードを実行するための検証ポリシーは設定可能
- チェーンコードの実行にネイティブの暗号通貨を必要としない
Ethereum
- ネットワーク内のノード間で実行される言語「Solidity」を使用してスマートコントラクトを作成する
- とてもスケーラブル
- 許可制ネットワークを作成するか、またはパブリックの Ethereum ネットワークを使用する
- コンセンサスアルゴリズムはパブリックネットワークには「Proof of Work(PoW)」、プライベートネットワークには「Proof of Ahthority(PoA)」を使用するように設定されている
- ネットワークにアクセスできる人はだれでも台帳のすべてのデータを見ることができる
誰がネットワークを所有しているか?
- ネットワークは分散化されており、最初の作成者が離れた後もアクティブなままになる
- メンバーを招待
- メンバーは誰を招待するか、削除するかを投票する
- ネットワーク全体の設定
- ネットワークの投票ルールを設定して、メンバーが民主的にネットワークを管理できる
- 各メンバーは自分のリソースに対して支払う
- Amazon Managed Blockchain は、注文サービスやネットワーク設定など共有コンポーネントを管理する
料金
料金体系はこちらの図が解りやすいです。
- 従量課金
- 秒あたりの課金
- 各メンバーは、自分のリソースと、ネットワークに書き込むデータの料金を支払う
- リソースエンドポイントにアクセスするために作成された VPC エンドポイントは別途請求される
- 通常の AWS データ転送料金
以下、執筆時点で提供されている北バージニアリージョンでの価格表です。
Starter Edition | Standard Edition | |
---|---|---|
メンバーシップ(per hour) | $0.30 | $0.55 |
ピアノード料金(per hour) | ||
(bc.t3.small) | $0.034 | $0.034 |
(bc.t3.medium) | $0.067 | $0.067 |
(bc.t3.large) | - | $0.134 |
(bc.t3.xlarge) | - | $0.267 |
(bc.m5.large) | - | $0.154 |
(bc.m5.xlarge) | - | $0.307 |
(bc.m5.2xlarge) | - | $0.617 |
(bc.m5.4large) | - | $1.229 |
(bc.c5.large) | - | $0.136 |
(bc.c5.xlarge) | - | $0.272 |
(bc.c5.2xlarge) | - | $0.544 |
(bc.c5.4xlarge) | - | $1.088 |
ピアノードストレージ(GB-month) | $0.10 | $0.10 |
データ書き込み(per GB) | $0.10 | $0.10 |
Starter Edition と Standard Edition
Amazon Managed Blockchain には2つの Edition があります。
Starter Edition | Standard Edition | |
---|---|---|
用途 | テストおよび小規模の本番ネットワーク | 本番ネットワーク |
メンバーシップ料金(per hour) | $0.30 | $0.55 |
ネットワークあたりのメンバー数 | 最大5 | 最大14 |
メンバーあたりのピアノード数 | 最大2 | 最大3 |
インスタンスタイプ | 先の表を参照 | 先の表を参照 |
トランザクションのスループットおよび可用性 | Standard より低い | Starter より高い |
Hyperledger Fabric とは?
Hyperledger Fabric でのトランザクションフロー
Hyperledger Fabric のフローは IBM の図がわかりやすかったです。(IBM のマニュアル、すごく見やすくなってますね!)
- クライアントはトランザクションの提案を Endorsing Peer 宛に送付します。
- Endorsing Peer はクライアントからトランザクションを受け取るとチェーンコードでトランザクションをシミュレーションし、結果をクライアントに返します。
- クライアントは Endorsement Policy を満たしていることを確認し、トランザクションを Ordering Service に送付します。
- Ordering Service はクライアントからトランザクションを受け取ると、トランザクションの順番を定義し、ブロックを作成します。作成したブロックを Committing Peer に送付します。
- Committing Peer は Ordering Service からブロックを受け取ると、Endorsement Policy を満たしているかのシミュレーション実行時とデータの整合性が取れているかを確認します。確認後、問題がなければ、ブロックを台帳へ書き込みます。
(引用:Hyperledger Fabric 入門, 第3回 コンセンサス/Ordering Service/Kafka/Zookeeper)
拡張された Hyperledger Fabric
- 注文サービス
- トランザクションの配信と順序を保証するためのファブリックネットワークのコアコンポーネント
- オープンソースを使用したプロダクショングレードのネットワークでは、このコンポーネントにApache kafkaを使用
- Managed Blockchain は Amazon QLDBテクノロジーを使用し、耐久性と信頼性を高めます
- 証明機関
- オープンソースでは soft HSM を使う
- Managed Blockchainは、認証局サービスを保護するために AWS KMS を使用
アクセス制御用のチャネルとプライベートデータ
- チャネルはネットワークの特定のメンバー間のトランザクションの分離を可能にします
- チャンネル構成ファイル(cnfigtx.yaml)に基づき、トランザクションファイルを生成しチャネルを作成または更新します
- プライベートデータはサブチャネルアクセス制御を可能にする
アーキテクチャ
認証機関、注文サービス、ピアノードなど、Amazon Managed Blockchain によってプロビジョニングおよび管理される Hyperledger Fabric コンポーネントとは自身の AWS 環境にはなく、AWS 基盤側に作成されます。利用者は PrivateLink を使って、こららのリソースにアクセスする形式になります。
ユースケース
サプライチェーンでのブロックチェーン利用
- 各組織はサプライチェーンデータの信頼できるコピーを持っています
- スマートコントラクトを通して支払いを自動化することができます
- コンポーネントがサプライチェーンを通過するとき、コンポーネントの識別情報はイミュータブルに追跡されます
- 製品の品質を監視し、即座に行動することができます
金融機関:シンガポール証券取引所
既存システムの課題 | ブロクチェーンによる利点 |
---|---|
貿易取引を決済するための複数の銀行間の信頼の欠如、したがって仲介金融機関が必要 | 分散型の信頼を可能にし、貿易ごとの貿易における決済時間の大幅な短縮 |
特に国際的な転送の場合、余分なホップが発生するため、各エリアを越えてデータを送信するプロセスが非効率的 | 仲介者なしでデータとトランザクションを効率的に転送 |
銀行間で異種システムからのAPI統合を使用して相互に通信するため、APIの多様性は高価であり、維持するのが面倒 | ・スマートコントラクトによるコンプライアンスの実施によりコストが削減(銀行システム間でAPIスパゲッティがなくなる)・新規参入メンバーを簡単に追加 |
まとめ
AWS のブロックチェーンサービスの比較
||Amazon QLDB|Amazon Manaaged Blockchain| |---|---|---| |所有権|台帳は信頼された中央機関が所有および管理し、提携している任意の数の使用者に共有される。|信頼関係を持たず互いを知ることのない複数の使用者間でトランザクションを実行できる。各使用者(メンバー)はネットワーク内にピアノードを所有する。| |イミュータブル|すべてのトランザクションをブロックに保管、追加専用のジャーナルを使用。ブロックはすべて、シーケンス内で暗号的に連結される。 中央の所有者やその他組織が削除したり変更したりできない。|処理されたトランザクションはブロックに保管され、まとめて暗号的に連結される。変更はできない。 トランザクションが処理されると、すべてのメンバーに複製されて変更や削除は行えなくなる。| |検証可能|暗号を使用して変更履歴の簡潔なサマリーを作成。このサマリーは台帳内のデータの系列を暗号的に検証するために使用される。|各メンバーは台帳のローカルコピーを保存しており、台帳の内容が正確であることを個別に検証し確認できる。変更を加える場合は、ネットワークのメンバーが新しいトランザクションを検証し、すべてのピア組織でデータを一貫させる必要がある。| |透過的|データ履歴全般に SQL ライクなクエリを実行することができ、情報の完全かつ透過的なログが提供される。|処理されたすべてのトランザクションは 1 つまたは複数の組織に帰属し、すべてのメンバーに完全な透過性が提供される。 Hyperledger Fabric などの許可性ブロックチェーンのフレームワークでは、情報へのアクセスを選択されたピアグループのみに許可するといった透過性の設定を行うことが可能。| |主なメリット|高速 信頼された中央の台帳は、実行の際に分散合意を必要としないので、簡単にスケールアップでき、共通のブロックチェーンフレームワークを使用した台帳よりもすばやくトランザクションを実行できる。|仲介者が不要 各ピア組織は、エンコードされたアプリケーションロジックを使って新しいトランザクションを開始できる。 トランザクションが開始されるとネットワーク内のすべてのピアに複製され、複数の使用者がその情報にアクセスしたり検証できる。 メンバー間の連絡係の役割を果たす仲介者は必要がなくなり、複雑なトランザクションが効率化され、費用も抑えられる。|
AWS におけるブロックチェーンソリューションのビルディングブロック
- Managed Blockchain, EC2, ECS, RDS
- ブロックチェーンインフラストラクチャの基盤としてAWSのマネージドブロックチェーンサービスまたは他のコンピューティングサービスを使用する
- S3
- 高可用性のためのオフチェーンデータストレージとしてS3を利用する
- QLDB, DynamoDB
- ブロックチェーンアプリケーションをサポートし、メタデータを格納するために、オフチェーンデータベースソリューションを活用する
- API Gateway
- Amazon API Gatewayでは、ブロックチェーンアプリケーションを強化するためのカスタムREST APIを作成できる
- Kinesis, Redshift
- 分析を実行し、ブロックチェーンのデータからほぼリアルタイムで洞察を得る
- CloudHSM
- CloudHSMを使用してブロックチェーン参加者の秘密鍵を管理する
- SQS, SNS, Lambda
- ブロックチェーンのスマートコントラクトにプログラムされたイベントに応答するために通知を送信したり、サーバーレスコンピューティングを利用したりする
- IoT
- 固有のIDを持つIoTデバイスを共通の基盤となるデータ層に接続する
さいごに
従来、トランザクションは企業が所有するデータベースに記録されるのがあたりまえでしたが、ブロックチェーンネットワークは共有することで整合性と信頼性を担保する、まったく新しい発想です。国内事例はまだ少ないですが、AWS Summit Tokyo でソニー・ミュージック様が Amazon Managed Blockchain 事例で登壇されていたのが記憶にあたらしいですね。
Amazon Managed Blockchain, QLDB について、これからも追いかけて行きます!あわせて、それらの基礎技術であるブロックチェーンの仕組みや、スマートコントラクト開発についても理解を深めていきたいと思います。
今回は資料ベースでのまとめだったので、次は実際に手を動かすところを試してみます!
以上!大阪オフィスの丸毛(@marumo1981)でした!